package com.data.security;

import java.util.ArrayList;
import java.util.List;

import com.data.security.modelo.AdaptadorArchivos;
import com.data.security.modelo.Archivo;
import com.data.security.modelo.Nube;
import com.data.security.modelo.ParcelArchivo;
import com.dropbox.sync.android.DbxFileInfo;
import com.dropbox.sync.android.DbxPath;

import android.app.ActionBar;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ListView;
import android.widget.Toast;

public class ArchivosNubeActivity extends Activity {

	private ListView listado;
	private AdaptadorArchivos adaptador;
	private ArrayList<Archivo> actuales;
	private Nube nubeDBx;
	public static boolean activo = false;
	private List<DbxFileInfo> lista;
	private DbxPath rutaActual;
<<<<<<< .mine
	private int raiz;
=======
	private boolean atras;
>>>>>>> .r35

	@Override
	protected void onCreate(Bundle saved) {
		super.onCreate(saved);
		activo = true;
		atras=false;
		setContentView(R.layout.activity_archivosnube);
        raiz=getIntent().getExtras().getInt("raiz");
        Log.d("Raiz recibida  a Archivos Nube Activity", raiz+"");
		if (raiz==0){
			rutaActual = DbxPath.ROOT;
		}else{
			rutaActual=new DbxPath(Nube.PATH);
		}

		cargarViews();

		nubeDBx = new Nube(this);
		if (!nubeDBx.estaEnlazado()) {
			nubeDBx.enlazar();
		}

		ActionBar barra = getActionBar();
		barra.setIcon(getResources().getDrawable(R.drawable.descargar));
		barra.setBackgroundDrawable(getResources().getDrawable(
				R.color.dropboxcolor));

	}

	@Override
	protected void onResume() {
		super.onResume();

		setAdaptador();
		cargarArchivos(rutaActual, null);

	}

	@Override
	public void onActivityResult(int solicitud, int resultado, Intent data) {

		if (resultado == RESULT_OK) {
			if (solicitud == nubeDBx.SOLICITUD) {

				mostrar("OK");
				try {
					Thread.sleep(7000);
				} catch (InterruptedException e) {

				}

			}
		}

		super.onActivityResult(solicitud, resultado, data);
	}

	private void cargarArchivos(final DbxPath inicio, final DbxPath anterior) {
		mostrar(getString(R.string.labelsincronizando));
		new Thread(new Runnable() {
			@Override
			public void run() {

				if (anterior != null) {
					adaptador.setExisteAtras(true);
				} else {
					adaptador.setExisteAtras(false);
				}
				lista = nubeDBx.descargarArchivos(inicio, anterior);
				montarArchivos();

			}

		}) {
		}.start();

	}

	private void montarArchivos() {
		runOnUiThread(new Runnable() {

			@Override
			public void run() {
				if (lista != null) {
					for (int k = 0; k < lista.size(); k++) {

						Archivo adj = new Archivo();
						if (lista.get(k).isFolder) {
							adj.setRuta(lista.get(k).path.toString() + "/");

							adj.setRutaAnterior(rutaActual);

						} else {
							adj.setRuta(lista.get(k).path.toString());
							adj.setTipo(Archivo.extraerExtension(adj.getRuta()));

						}

						adj.setTitulo(Archivo.extraerTitulo(adj.getRuta()));
						adj.setTamanio(lista.get(k).size);
						
						if (lista.get(k).isFolder && lista.get(k).path.getName().trim().equalsIgnoreCase("seguridad")) {
							
						}else{
							actuales.add(adj);
						}
						
						if (ArchivosNubeActivity.activo) {
							adaptador.notifyDataSetChanged();
						}
					}

				}

			}
		});
	}

	private void mostrar(final String mss) {

		runOnUiThread(new Runnable() {

			@Override
			public void run() {

				Toast.makeText(getApplicationContext(), mss, Toast.LENGTH_SHORT)
						.show();
			}
		});

	}

	@Override
	protected void onPause() {
		super.onPause();
		activo = false;
		this.finish();
	}
<<<<<<< .mine
	
	
=======
	
	@Override
	public void onBackPressed(){
		super.onBackPressed();
		atras=true;
	}
	
	@Override
	public void onDestroy(){
		super.onDestroy();
		if(atras)startActivity(new Intent(getApplicationContext(),InicioActivity.class));
	}
>>>>>>> .r35

	private void setAdaptador() {
		actuales = new ArrayList<Archivo>();
		adaptador = new AdaptadorArchivos(getApplicationContext(), actuales);
		listado.setAdapter(adaptador);
	}

	private void cargarViews() {
		listado = (ListView) findViewById(R.id.listadonube);

		listado.setOnItemClickListener(new OnItemClickListener() {

			@Override
			public void onItemClick(AdapterView<?> parent, View view,
					int position, long id) {

				Archivo archivo = actuales.get(position);
				if (archivo.esArchivo() || archivo.esMultimedia()) {
					Intent transporte = new Intent(getApplicationContext(),
							VistaItemNubeActivity.class);
					transporte.putExtra("archivo", new ParcelArchivo(archivo));
					Log.d("Raiz a pasar",raiz+"");
					transporte.putExtra("encriptar", raiz);
					startActivity(transporte);
				} else {
					actuales.clear();
					DbxPath aux = new DbxPath(archivo.getRuta()
							.replace("/", ""));
					if (aux.toString().trim().equals("")) {
						cargarArchivos(aux, null);
					} else {
						cargarArchivos(aux, archivo.getRutaAnterior());
					}
					rutaActual = aux;
				}

			}

		});
	}

}
